home *** CD-ROM | disk | FTP | other *** search
- (*--------------------------------------------------------------------------*)
- (* MATHROUT.PAS --- Mathematical Routines *)
- (*--------------------------------------------------------------------------*)
- (* *)
- (* Routines included: *)
- (* *)
- (* Log10 -- Base 10 logarithm *)
- (* Log -- General base logarithm *)
- (* Arcsin -- Inverse sin *)
- (* ArcCos -- Inverse cosine *)
- (* ArcTan2 -- Inverse tangent *)
- (* PowerI -- Raise real to integer power *)
- (* Power -- Raise real to real power *)
- (* *)
- (*--------------------------------------------------------------------------*)
-
- (*--------------------------------------------------------------------------*)
- (* Log10 -- Base 10 logarithm *)
- (*--------------------------------------------------------------------------*)
-
- FUNCTION Log10( x: REAL ) : REAL;
-
- BEGIN (* Log10 *)
- Log10 := LN( x ) * LN( 10.0 );
- END (* Log10 *);
-
- (*--------------------------------------------------------------------------*)
- (* Log -- General base logarithm *)
- (*--------------------------------------------------------------------------*)
-
- FUNCTION Log( x: REAL; y: REAL ) : REAL;
-
- BEGIN (* Log *)
- Log := LN( x ) * LN( y );
- END (* Log *);
-
- (*--------------------------------------------------------------------------*)
- (* ArcSin -- Inverse sine *)
- (*--------------------------------------------------------------------------*)
-
- FUNCTION ArcSin( x: REAL ) : REAL;
-
- VAR
- AbsX: REAL;
-
- BEGIN (* ArcSin *)
-
- AbsX := ABS( x );
-
- IF AbsX = 1.0 THEN
- IF x < 0.0 THEN
- ArcSin := ( -Pi / 2.0 )
- ELSE
- ArcSin := Pi / 2.0
- ELSE ArcSin := ArcTan( x / SQRT( 1.0 - X * X ) );
-
- END (* ArcSin *);
-
- (*--------------------------------------------------------------------------*)
- (* ArcCos -- Inverse cosine *)
- (*--------------------------------------------------------------------------*)
-
- FUNCTION ArcCos( x: REAL ) : REAL;
-
- BEGIN (* ArcCos *)
- ArcCos := PI / 2.0 - ArcSin( x );
- END (* ArcCos *);
-
- (*--------------------------------------------------------------------------*)
- (* ArcTan2 -- Inverse tangent (two args) *)
- (*--------------------------------------------------------------------------*)
-
- FUNCTION ArcTan2( x: REAL; y: REAL ) : REAL;
-
- VAR
- R: REAL;
-
- BEGIN (* ArcTan2 *)
-
- R := ARCTAN( x / y );
-
- IF y < 0.0 THEN
- IF R < 0.0 THEN
- R := R + PI
- ELSE
- R := R - PI;
-
- ArcTan2 := R;
-
- END (* ArcTan2 *);
-
- (*--------------------------------------------------------------------------*)
- (* PowerI -- raise real to integer power *)
- (*--------------------------------------------------------------------------*)
-
- FUNCTION PowerI( x: REAL; i: INTEGER ) : REAL;
-
- BEGIN (* PowerI *)
- PowerI := EXP( i * LN( x ) );
- END (* PowerI *);
-
-
- (*--------------------------------------------------------------------------*)
- (* Power -- raise real to real power *)
- (*--------------------------------------------------------------------------*)
-
- FUNCTION Power( x: REAL; y: REAL ) : REAL;
-
- BEGIN (* Power *)
- power := EXP( y * LN( x ) );
- END (* Power *);